﻿/**************************************************************************
创建日期:	2019/6/10 13:57:15     
作	  者:	张存
邮 	  箱:	zhangcunliang@126.com
创建时间:	
Copyright (c)  ZhCun.cn

描	述：
记	录：
***************************************************************************/
using ZhCun.Utils;

namespace ZhCun.WebCommon.AL
{
    public class AppCommonConfig : AppConfigBase<AppCommonConfig>
    {
        /// <summary>
        /// 管理员角色Id，该角色将不被权限所限制
        /// </summary>
        public string ManageRoleId { set; get; } = "000";
        /// <summary>
        /// 管理员用户Id，该用户将不会被删除
        /// </summary>
        public string ManageUserId { set; get; } = "000";
        /// <summary>
        /// 当没有标注角色权限时的默认角色Id，为空则表示不允许访问，多个角色由 “,” 号隔开
        /// </summary>
        public string DefaultRoleIds { set; get; }
        /// <summary>
        /// 数据库类型
        /// </summary>
        public string DBType { set; get; } = "SQLServer";
        /// <summary>
        /// web api的token过期时间分钟
        /// </summary>
        public int TokenTimeOutByApi { set; get; } = 1440;
        /// <summary>
        /// web页面的token过期时间分钟
        /// </summary>
        public int TokenTimeOutByPage { set; get; } = 60;
        /// <summary>
        /// 是否对http请求进行日志记录
        /// </summary>
        public bool WriteHttpLog { set; get; } = true;
        /// <summary>
        /// mvc登录页面的相对路径url，如：/Login/Index
        /// </summary>
        public string LoginPageUrl { set; get; } = "/User/Login";
        /// <summary>
        /// post数据请求时是否对数据进行加密
        /// </summary>
        public bool DataEncrypt { set; get; } = true;
        /// <summary>
        /// 当启用数据加密时用于匹配URL的正则表达式（未使用）
        /// </summary>
        public string DataEncryptUrlMatch { set; get; } = "^/api/[\\s\\S]*$";
        /// <summary>
        /// 当启用数据加密时用于忽略URL的正则表达式（未使用）
        /// </summary>
        public string DataEncryptUrlIgnore { set; get; } = "^/swagger/[\\s\\S]*$";
        /// <summary>
        /// 加密aes密钥的RSA私钥
        /// </summary>
        public string RsaPrivateKey { set; get; }
        /// <summary>
        /// 开启Swagger
        /// </summary>
        public bool SwaggerEnable { set; get; } = false;
        /// <summary>
        /// Swagger 程序输出XML文件，多个由 , 隔开
        /// </summary>
        public string SwaggerXmlComments { set; get; } = "Web.xml,ZhCun.WebCommon.xml,ZhCun.WebCommon.AL.xml";
        /// <summary>
        /// swagger 路由模板（进入swagger的基础路径）
        /// </summary>
        public string SwaggerRoutePrefix { get; set; } = "swagger";
        /// <summary>
        /// 登录状态的 redis 连接字符串
        /// </summary>
        public string LoginStateRedisConfig { set; get; }
        /// <summary>
        /// 登录状态缓存类型(Redis，Memory),，默认为：Memory ，当为 Redis 时 LoginStateRedisConfig 不能为空
        /// </summary>
        public string LoginStateCacheType { set; get; } = "Memory";
        /// <summary>
        /// http监听端口
        /// </summary>
        public ushort HttpPort { set; get; } = 5001;
        /// <summary>
        /// https监听端口
        /// </summary>
        public ushort HttpsPort { set; get; } = 0;
        /// <summary>
        /// https 密钥文件 .pfx  的名称
        /// </summary>
        public string HpptsFileName { set; get; }
        /// <summary>
        /// https 密钥文件 密码
        /// </summary>
        public string HpptsFilePassword { set; get; }
        /// <summary>
        /// 应用标题显示
        /// </summary>
        public string AppCaption { set; get; }
    }
}